const { checkIsSupportSoterAuthentication, startFacialRecognitionVerify } = require('../../../../api/index');
const { validate, getSex } = require('../../../../utils/util');

const { rz2 } = require('../../../utils/base64/rz2');

// pages/authentication/index/index.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    rz2,
    formData: {
      username: '',
      idCard: ''
    },
    errors: {},
    rules: {
      username: [{
        empty: true,
        msg: '姓名不能为空'
      }],
      idCard: [{
          empty: true,
          msg: '身份证号不能为空'
        },
        {
          rule: val => {
            let _IDRe18 = /^([1-6][1-9]|50)\d{4}(18|19|20)\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/
            let _IDre15 = /^([1-6][1-9]|50)\d{4}\d{2}((0[1-9])|10|11|12)(([0-2][1-9])|10|20|30|31)\d{3}$/
            // 校验身份证：
            if (_IDRe18.test(val) || _IDre15.test(val)) {
              return true;
            }
          },
          msg: '身份证号格式不正确'
        }
      ]
    }
  },
  //  修改表单数据
  onFormData(event) {
    const { prop } = event.currentTarget.dataset;
    this.data.formData[prop] = event.detail;
  },
  // 提交数据
  onSubmit(event) {    
    //  判断返回的错误集合是否是空的，如果空则说明验证通过了，否则将错误显示到页面上
    const error = validate(this.data.formData, this.data.rules);
    if(error) {  //  如果报错就不允许进行数据的提交
      this.setData({ errors: error });
      return;
    }

    //  人脸识别认证
    faceRecognition.call(this);
  },
})

async function faceRecognition() {
  wx.setStorageSync('authentication', this.data.formData);
  wx.navigateTo({ url: '/packageA/pages/authentication/success/index' });
  return;

  const supportType = (await checkIsSupportSoterAuthentication()) || [];

  if(!supportType.includes('facial')) {  //  支持人脸识别
    wx.showToast({ 
      title: '不支持人脸识别',
      icon: 'error',
      duration: 1000
    });

    return;
  } 

  //  开始进行验证 - 并判断验证是否通过
  const { username, idCard } = this.data.formData;
  const isAccess = await startFacialRecognitionVerify(username, idCard);

  if(isAccess) { //  通过 缓存 真实姓名 和 身份证号， 将页面跳转到注册页面，进行学子信息注册
    wx.setStorageSync('authentication', this.data.formData);
    wx.navigateTo({ url: '/packageA/pages/authentication/success/index' });
  } else {  //  没通过 让其返回首页
    wx.redirectTo({ url: '/pages/home/index' })
  }
}